package tests;

import common.Utils;
import org.openqa.selenium.By;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ASUS
 * Date: 2025-04-28
 * Time: 11:21
 */
/*
登录功能测试
 */
public class LoginPage extends Utils {
    public static String url = "http://127.0.0.1:58080/sign-in.html";
    public LoginPage() {
        super(url);
    }

    // 检查登录界面是否正常打开
     public void LoginPageRight() throws InterruptedException {
        // 获取页面元素
        String loginname = driver.findElement(By.cssSelector("body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2")).getText();
        // 断言检查
        assert loginname.equals("用户登录");
     }

    // 成功登录
    public void LoginSuc() throws InterruptedException {
        // 刷新页面
         driver.navigate().refresh();
         // 输入账号密码,并点击登录按钮
         driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");
         driver.findElement(By.cssSelector("#password")).sendKeys("123");
         driver.findElement(By.cssSelector("#submit")).click();
         // 通过断言检查是否登录成功
         String title = driver.findElement(By.cssSelector("#article_list_board_title")).getText();
         assert title.equals("首页");
    }

    // 异常登录 (用户名和密码都为空)
    public void LoginNoUserNameAndPassword() throws InterruptedException {
        // 从成功登录界面回退到登录界面
        driver.navigate().back();
        // 刷新界面, 清空输入框中的内容
        driver.navigate().refresh();
        // 找到用户名输入框, 输入为空
        driver.findElement(By.cssSelector("#username")).sendKeys("");
        // 找到密码输入框, 输入为空
        driver.findElement(By.cssSelector("#password")).sendKeys("");
        // 点击登录按钮
        driver.findElement(By.cssSelector("#submit")).click();
        // 检查用户名输入框下面的提示是否为"用户名不能为空"
        String tip1 = driver.findElement(By.cssSelector("#signInForm > div.mb-3 > div")).getText();
        assert tip1.equals("用户名不能为空");
        // 检查密码输入框下面的提示是否为"密码不能为空"
        String tip2 = driver.findElement(By.cssSelector("#signInForm > div.mb-2 > div > div")).getText();
        assert tip2.equals("密码不能为空");
    }

    // 异常登录 (用户名为空)
    public void LoginNoUserName() {
         // 刷新界面, 清空输入框中的内容
        driver.navigate().refresh();
        // 找到用户名输入框, 输入为空
        driver.findElement(By.cssSelector("#username")).sendKeys("");
        // 找到密码输入框, 输入正确密码
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        // 点击登录按钮
        driver.findElement(By.cssSelector("#submit")).click();
        // 检查用户名输入框下面的提示是否为"用户名不能为空"
        String tip1 = driver.findElement(By.cssSelector("#signInForm > div.mb-3 > div")).getText();
        assert tip1.equals("用户名不能为空");
    }

    // 异常登录 (密码为空)
    public void LoginNoPassward() {
        // 刷新界面, 清空输入框中的内容
        driver.navigate().refresh();
        // 找到用户名输入框, 输入用户名
        driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");
        // 找到密码输入框, 输入为空
        driver.findElement(By.cssSelector("#password")).sendKeys("");
        // 点击登录按钮
        driver.findElement(By.cssSelector("#submit")).click();
        // 检查密码输入框下面的提示是否为"密码不能为空"
        String tip1 = driver.findElement(By.cssSelector("#signInForm > div.mb-2 > div > div")).getText();
        assert tip1.equals("密码不能为空");
    }

    // 异常登录(用户名错误)
    public void LoginUserNameError() throws InterruptedException {
        // 刷新界面, 清空输入框中的内容
        driver.navigate().refresh();
        // 找到用户名输入框, 输入错误的用户名
        driver.findElement(By.cssSelector("#username")).sendKeys("zhngsan");
        // 找到密码输入框, 输入正确的密码
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        // 点击登录按钮
        driver.findElement(By.cssSelector("#submit")).click();
        // 获取 url
        Thread.sleep(1000);
        String loginUrl = driver.getCurrentUrl();
        // 判断当前是否还是登录页面, 还在登录页面则说明登录失败
        assert loginUrl.equals("http://127.0.0.1:58080/sign-in.html");
    }

    // 异常登录(密码错误)
    public void LoginPasswordError() throws InterruptedException {
        // 刷新界面, 清空输入框中的内容
        driver.navigate().refresh();
        // 找到用户名输入框, 输入正确的用户名
        driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");
        // 找到密码输入框, 输入正确的密码
        driver.findElement(By.cssSelector("#password")).sendKeys("1243");
        // 点击登录按钮
        driver.findElement(By.cssSelector("#submit")).click();
        // 获取 url
        Thread.sleep(1000);
        String loginUrl = driver.getCurrentUrl();
        // 判断当前是否还是登录页面, 还在登录页面则说明登录失败
        assert loginUrl.equals("http://127.0.0.1:58080/sign-in.html");
    }
}
